﻿using System;
using System.Collections.Generic;

namespace Teigha.Core
{
	public class AllPalettes
	{
		private static uint ODPALENTRY(byte r, byte g, byte b)
		{
			uint num = (uint)((int)r | (int)g << 8);
			return num | (uint)((uint)b << 16);
		}

		private static uint[] CreateLightPalette()
		{
			return new List<uint>
			{
				AllPalettes.ODPALENTRY(byte.MaxValue, byte.MaxValue, byte.MaxValue),
				AllPalettes.ODPALENTRY(byte.MaxValue, 0, 0),
				AllPalettes.ODPALENTRY(byte.MaxValue, byte.MaxValue, 0),
				AllPalettes.ODPALENTRY(0, byte.MaxValue, 0),
				AllPalettes.ODPALENTRY(0, byte.MaxValue, byte.MaxValue),
				AllPalettes.ODPALENTRY(0, 0, byte.MaxValue),
				AllPalettes.ODPALENTRY(byte.MaxValue, 0, byte.MaxValue),
				AllPalettes.ODPALENTRY(0, 0, 0),
				AllPalettes.ODPALENTRY(128, 128, 128),
				AllPalettes.ODPALENTRY(192, 192, 192),
				AllPalettes.ODPALENTRY(byte.MaxValue, 0, 0),
				AllPalettes.ODPALENTRY(byte.MaxValue, 127, 127),
				AllPalettes.ODPALENTRY(165, 0, 0),
				AllPalettes.ODPALENTRY(165, 82, 82),
				AllPalettes.ODPALENTRY(127, 0, 0),
				AllPalettes.ODPALENTRY(127, 63, 63),
				AllPalettes.ODPALENTRY(76, 0, 0),
				AllPalettes.ODPALENTRY(76, 38, 38),
				AllPalettes.ODPALENTRY(38, 0, 0),
				AllPalettes.ODPALENTRY(38, 19, 19),
				AllPalettes.ODPALENTRY(byte.MaxValue, 63, 0),
				AllPalettes.ODPALENTRY(byte.MaxValue, 159, 127),
				AllPalettes.ODPALENTRY(165, 41, 0),
				AllPalettes.ODPALENTRY(165, 103, 82),
				AllPalettes.ODPALENTRY(127, 31, 0),
				AllPalettes.ODPALENTRY(127, 79, 63),
				AllPalettes.ODPALENTRY(76, 19, 0),
				AllPalettes.ODPALENTRY(76, 47, 38),
				AllPalettes.ODPALENTRY(38, 9, 0),
				AllPalettes.ODPALENTRY(38, 23, 19),
				AllPalettes.ODPALENTRY(byte.MaxValue, 127, 0),
				AllPalettes.ODPALENTRY(byte.MaxValue, 191, 127),
				AllPalettes.ODPALENTRY(165, 82, 0),
				AllPalettes.ODPALENTRY(165, 124, 82),
				AllPalettes.ODPALENTRY(127, 63, 0),
				AllPalettes.ODPALENTRY(127, 95, 63),
				AllPalettes.ODPALENTRY(76, 38, 0),
				AllPalettes.ODPALENTRY(76, 57, 38),
				AllPalettes.ODPALENTRY(38, 19, 0),
				AllPalettes.ODPALENTRY(38, 28, 19),
				AllPalettes.ODPALENTRY(byte.MaxValue, 191, 0),
				AllPalettes.ODPALENTRY(byte.MaxValue, 223, 127),
				AllPalettes.ODPALENTRY(165, 124, 0),
				AllPalettes.ODPALENTRY(165, 145, 82),
				AllPalettes.ODPALENTRY(127, 95, 0),
				AllPalettes.ODPALENTRY(127, 111, 63),
				AllPalettes.ODPALENTRY(76, 57, 0),
				AllPalettes.ODPALENTRY(76, 66, 38),
				AllPalettes.ODPALENTRY(38, 28, 0),
				AllPalettes.ODPALENTRY(38, 33, 19),
				AllPalettes.ODPALENTRY(byte.MaxValue, byte.MaxValue, 0),
				AllPalettes.ODPALENTRY(byte.MaxValue, byte.MaxValue, 127),
				AllPalettes.ODPALENTRY(165, 165, 0),
				AllPalettes.ODPALENTRY(165, 165, 82),
				AllPalettes.ODPALENTRY(127, 127, 0),
				AllPalettes.ODPALENTRY(127, 127, 63),
				AllPalettes.ODPALENTRY(76, 76, 0),
				AllPalettes.ODPALENTRY(76, 76, 38),
				AllPalettes.ODPALENTRY(38, 38, 0),
				AllPalettes.ODPALENTRY(38, 38, 19),
				AllPalettes.ODPALENTRY(191, byte.MaxValue, 0),
				AllPalettes.ODPALENTRY(223, byte.MaxValue, 127),
				AllPalettes.ODPALENTRY(124, 165, 0),
				AllPalettes.ODPALENTRY(145, 165, 82),
				AllPalettes.ODPALENTRY(95, 127, 0),
				AllPalettes.ODPALENTRY(111, 127, 63),
				AllPalettes.ODPALENTRY(57, 76, 0),
				AllPalettes.ODPALENTRY(66, 76, 38),
				AllPalettes.ODPALENTRY(28, 38, 0),
				AllPalettes.ODPALENTRY(33, 38, 19),
				AllPalettes.ODPALENTRY(127, byte.MaxValue, 0),
				AllPalettes.ODPALENTRY(191, byte.MaxValue, 127),
				AllPalettes.ODPALENTRY(82, 165, 0),
				AllPalettes.ODPALENTRY(124, 165, 82),
				AllPalettes.ODPALENTRY(63, 127, 0),
				AllPalettes.ODPALENTRY(95, 127, 63),
				AllPalettes.ODPALENTRY(38, 76, 0),
				AllPalettes.ODPALENTRY(57, 76, 38),
				AllPalettes.ODPALENTRY(19, 38, 0),
				AllPalettes.ODPALENTRY(28, 38, 19),
				AllPalettes.ODPALENTRY(63, byte.MaxValue, 0),
				AllPalettes.ODPALENTRY(159, byte.MaxValue, 127),
				AllPalettes.ODPALENTRY(41, 165, 0),
				AllPalettes.ODPALENTRY(103, 165, 82),
				AllPalettes.ODPALENTRY(31, 127, 0),
				AllPalettes.ODPALENTRY(79, 127, 63),
				AllPalettes.ODPALENTRY(19, 76, 0),
				AllPalettes.ODPALENTRY(47, 76, 38),
				AllPalettes.ODPALENTRY(9, 38, 0),
				AllPalettes.ODPALENTRY(23, 38, 19),
				AllPalettes.ODPALENTRY(0, byte.MaxValue, 0),
				AllPalettes.ODPALENTRY(127, byte.MaxValue, 127),
				AllPalettes.ODPALENTRY(0, 165, 0),
				AllPalettes.ODPALENTRY(82, 165, 82),
				AllPalettes.ODPALENTRY(0, 127, 0),
				AllPalettes.ODPALENTRY(63, 127, 63),
				AllPalettes.ODPALENTRY(0, 76, 0),
				AllPalettes.ODPALENTRY(38, 76, 38),
				AllPalettes.ODPALENTRY(0, 38, 0),
				AllPalettes.ODPALENTRY(19, 38, 19),
				AllPalettes.ODPALENTRY(0, byte.MaxValue, 63),
				AllPalettes.ODPALENTRY(127, byte.MaxValue, 159),
				AllPalettes.ODPALENTRY(0, 165, 41),
				AllPalettes.ODPALENTRY(82, 165, 103),
				AllPalettes.ODPALENTRY(0, 127, 31),
				AllPalettes.ODPALENTRY(63, 127, 79),
				AllPalettes.ODPALENTRY(0, 76, 19),
				AllPalettes.ODPALENTRY(38, 76, 47),
				AllPalettes.ODPALENTRY(0, 38, 9),
				AllPalettes.ODPALENTRY(19, 38, 23),
				AllPalettes.ODPALENTRY(0, byte.MaxValue, 127),
				AllPalettes.ODPALENTRY(127, byte.MaxValue, 191),
				AllPalettes.ODPALENTRY(0, 165, 82),
				AllPalettes.ODPALENTRY(82, 165, 124),
				AllPalettes.ODPALENTRY(0, 127, 63),
				AllPalettes.ODPALENTRY(63, 127, 95),
				AllPalettes.ODPALENTRY(0, 76, 38),
				AllPalettes.ODPALENTRY(38, 76, 57),
				AllPalettes.ODPALENTRY(0, 38, 19),
				AllPalettes.ODPALENTRY(19, 38, 28),
				AllPalettes.ODPALENTRY(0, byte.MaxValue, 191),
				AllPalettes.ODPALENTRY(127, byte.MaxValue, 223),
				AllPalettes.ODPALENTRY(0, 165, 124),
				AllPalettes.ODPALENTRY(82, 165, 145),
				AllPalettes.ODPALENTRY(0, 127, 95),
				AllPalettes.ODPALENTRY(63, 127, 111),
				AllPalettes.ODPALENTRY(0, 76, 57),
				AllPalettes.ODPALENTRY(38, 76, 66),
				AllPalettes.ODPALENTRY(0, 38, 28),
				AllPalettes.ODPALENTRY(19, 38, 33),
				AllPalettes.ODPALENTRY(0, byte.MaxValue, byte.MaxValue),
				AllPalettes.ODPALENTRY(127, byte.MaxValue, byte.MaxValue),
				AllPalettes.ODPALENTRY(0, 165, 165),
				AllPalettes.ODPALENTRY(82, 165, 165),
				AllPalettes.ODPALENTRY(0, 127, 127),
				AllPalettes.ODPALENTRY(63, 127, 127),
				AllPalettes.ODPALENTRY(0, 76, 76),
				AllPalettes.ODPALENTRY(38, 76, 76),
				AllPalettes.ODPALENTRY(0, 38, 38),
				AllPalettes.ODPALENTRY(19, 38, 38),
				AllPalettes.ODPALENTRY(0, 191, byte.MaxValue),
				AllPalettes.ODPALENTRY(127, 223, byte.MaxValue),
				AllPalettes.ODPALENTRY(0, 124, 165),
				AllPalettes.ODPALENTRY(82, 145, 165),
				AllPalettes.ODPALENTRY(0, 95, 127),
				AllPalettes.ODPALENTRY(63, 111, 127),
				AllPalettes.ODPALENTRY(0, 57, 76),
				AllPalettes.ODPALENTRY(38, 66, 76),
				AllPalettes.ODPALENTRY(0, 28, 38),
				AllPalettes.ODPALENTRY(19, 33, 38),
				AllPalettes.ODPALENTRY(0, 127, byte.MaxValue),
				AllPalettes.ODPALENTRY(127, 191, byte.MaxValue),
				AllPalettes.ODPALENTRY(0, 82, 165),
				AllPalettes.ODPALENTRY(82, 124, 165),
				AllPalettes.ODPALENTRY(0, 63, 127),
				AllPalettes.ODPALENTRY(63, 95, 127),
				AllPalettes.ODPALENTRY(0, 38, 76),
				AllPalettes.ODPALENTRY(38, 57, 76),
				AllPalettes.ODPALENTRY(0, 19, 38),
				AllPalettes.ODPALENTRY(19, 28, 38),
				AllPalettes.ODPALENTRY(0, 63, byte.MaxValue),
				AllPalettes.ODPALENTRY(127, 159, byte.MaxValue),
				AllPalettes.ODPALENTRY(0, 41, 165),
				AllPalettes.ODPALENTRY(82, 103, 165),
				AllPalettes.ODPALENTRY(0, 31, 127),
				AllPalettes.ODPALENTRY(63, 79, 127),
				AllPalettes.ODPALENTRY(0, 19, 76),
				AllPalettes.ODPALENTRY(38, 47, 76),
				AllPalettes.ODPALENTRY(0, 9, 38),
				AllPalettes.ODPALENTRY(19, 23, 38),
				AllPalettes.ODPALENTRY(0, 0, byte.MaxValue),
				AllPalettes.ODPALENTRY(127, 127, byte.MaxValue),
				AllPalettes.ODPALENTRY(0, 0, 165),
				AllPalettes.ODPALENTRY(82, 82, 165),
				AllPalettes.ODPALENTRY(0, 0, 127),
				AllPalettes.ODPALENTRY(63, 63, 127),
				AllPalettes.ODPALENTRY(0, 0, 76),
				AllPalettes.ODPALENTRY(38, 38, 76),
				AllPalettes.ODPALENTRY(0, 0, 38),
				AllPalettes.ODPALENTRY(19, 19, 38),
				AllPalettes.ODPALENTRY(63, 0, byte.MaxValue),
				AllPalettes.ODPALENTRY(159, 127, byte.MaxValue),
				AllPalettes.ODPALENTRY(41, 0, 165),
				AllPalettes.ODPALENTRY(103, 82, 165),
				AllPalettes.ODPALENTRY(31, 0, 127),
				AllPalettes.ODPALENTRY(79, 63, 127),
				AllPalettes.ODPALENTRY(19, 0, 76),
				AllPalettes.ODPALENTRY(47, 38, 76),
				AllPalettes.ODPALENTRY(9, 0, 38),
				AllPalettes.ODPALENTRY(23, 19, 38),
				AllPalettes.ODPALENTRY(127, 0, byte.MaxValue),
				AllPalettes.ODPALENTRY(191, 127, byte.MaxValue),
				AllPalettes.ODPALENTRY(82, 0, 165),
				AllPalettes.ODPALENTRY(124, 82, 165),
				AllPalettes.ODPALENTRY(63, 0, 127),
				AllPalettes.ODPALENTRY(95, 63, 127),
				AllPalettes.ODPALENTRY(38, 0, 76),
				AllPalettes.ODPALENTRY(57, 38, 76),
				AllPalettes.ODPALENTRY(19, 0, 38),
				AllPalettes.ODPALENTRY(28, 19, 38),
				AllPalettes.ODPALENTRY(191, 0, byte.MaxValue),
				AllPalettes.ODPALENTRY(223, 127, byte.MaxValue),
				AllPalettes.ODPALENTRY(124, 0, 165),
				AllPalettes.ODPALENTRY(145, 82, 165),
				AllPalettes.ODPALENTRY(95, 0, 127),
				AllPalettes.ODPALENTRY(111, 63, 127),
				AllPalettes.ODPALENTRY(57, 0, 76),
				AllPalettes.ODPALENTRY(66, 38, 76),
				AllPalettes.ODPALENTRY(28, 0, 38),
				AllPalettes.ODPALENTRY(33, 19, 38),
				AllPalettes.ODPALENTRY(byte.MaxValue, 0, byte.MaxValue),
				AllPalettes.ODPALENTRY(byte.MaxValue, 127, byte.MaxValue),
				AllPalettes.ODPALENTRY(165, 0, 165),
				AllPalettes.ODPALENTRY(165, 82, 165),
				AllPalettes.ODPALENTRY(127, 0, 127),
				AllPalettes.ODPALENTRY(127, 63, 127),
				AllPalettes.ODPALENTRY(76, 0, 76),
				AllPalettes.ODPALENTRY(76, 38, 76),
				AllPalettes.ODPALENTRY(38, 0, 38),
				AllPalettes.ODPALENTRY(38, 19, 38),
				AllPalettes.ODPALENTRY(byte.MaxValue, 0, 191),
				AllPalettes.ODPALENTRY(byte.MaxValue, 127, 223),
				AllPalettes.ODPALENTRY(165, 0, 124),
				AllPalettes.ODPALENTRY(165, 82, 145),
				AllPalettes.ODPALENTRY(127, 0, 95),
				AllPalettes.ODPALENTRY(127, 63, 111),
				AllPalettes.ODPALENTRY(76, 0, 57),
				AllPalettes.ODPALENTRY(76, 38, 66),
				AllPalettes.ODPALENTRY(38, 0, 28),
				AllPalettes.ODPALENTRY(38, 19, 33),
				AllPalettes.ODPALENTRY(byte.MaxValue, 0, 127),
				AllPalettes.ODPALENTRY(byte.MaxValue, 127, 191),
				AllPalettes.ODPALENTRY(165, 0, 82),
				AllPalettes.ODPALENTRY(165, 82, 124),
				AllPalettes.ODPALENTRY(127, 0, 63),
				AllPalettes.ODPALENTRY(127, 63, 95),
				AllPalettes.ODPALENTRY(76, 0, 38),
				AllPalettes.ODPALENTRY(76, 38, 57),
				AllPalettes.ODPALENTRY(38, 0, 19),
				AllPalettes.ODPALENTRY(38, 19, 28),
				AllPalettes.ODPALENTRY(byte.MaxValue, 0, 63),
				AllPalettes.ODPALENTRY(byte.MaxValue, 127, 159),
				AllPalettes.ODPALENTRY(165, 0, 41),
				AllPalettes.ODPALENTRY(165, 82, 103),
				AllPalettes.ODPALENTRY(127, 0, 31),
				AllPalettes.ODPALENTRY(127, 63, 79),
				AllPalettes.ODPALENTRY(76, 0, 19),
				AllPalettes.ODPALENTRY(76, 38, 47),
				AllPalettes.ODPALENTRY(38, 0, 9),
				AllPalettes.ODPALENTRY(38, 19, 23),
				AllPalettes.ODPALENTRY(0, 0, 0),
				AllPalettes.ODPALENTRY(45, 45, 45),
				AllPalettes.ODPALENTRY(91, 91, 91),
				AllPalettes.ODPALENTRY(137, 137, 137),
				AllPalettes.ODPALENTRY(183, 183, 183),
				AllPalettes.ODPALENTRY(179, 179, 179)
			}.ToArray();
		}

		public static uint[] getLightPalette()
		{
			if (AllPalettes.LightPalette == null)
			{
				AllPalettes.LightPalette = AllPalettes.CreateLightPalette();
			}
			return AllPalettes.LightPalette;
		}

		private static uint[] CreateDarkPalette()
		{
			return new List<uint>
			{
				AllPalettes.ODPALENTRY(0, 0, 0),
				AllPalettes.ODPALENTRY(byte.MaxValue, 0, 0),
				AllPalettes.ODPALENTRY(byte.MaxValue, byte.MaxValue, 0),
				AllPalettes.ODPALENTRY(0, byte.MaxValue, 0),
				AllPalettes.ODPALENTRY(0, byte.MaxValue, byte.MaxValue),
				AllPalettes.ODPALENTRY(0, 0, byte.MaxValue),
				AllPalettes.ODPALENTRY(byte.MaxValue, 0, byte.MaxValue),
				AllPalettes.ODPALENTRY(byte.MaxValue, byte.MaxValue, byte.MaxValue),
				AllPalettes.ODPALENTRY(128, 128, 128),
				AllPalettes.ODPALENTRY(192, 192, 192),
				AllPalettes.ODPALENTRY(byte.MaxValue, 0, 0),
				AllPalettes.ODPALENTRY(byte.MaxValue, 127, 127),
				AllPalettes.ODPALENTRY(204, 0, 0),
				AllPalettes.ODPALENTRY(204, 102, 102),
				AllPalettes.ODPALENTRY(153, 0, 0),
				AllPalettes.ODPALENTRY(153, 76, 76),
				AllPalettes.ODPALENTRY(127, 0, 0),
				AllPalettes.ODPALENTRY(127, 63, 63),
				AllPalettes.ODPALENTRY(76, 0, 0),
				AllPalettes.ODPALENTRY(76, 38, 38),
				AllPalettes.ODPALENTRY(byte.MaxValue, 63, 0),
				AllPalettes.ODPALENTRY(byte.MaxValue, 159, 127),
				AllPalettes.ODPALENTRY(204, 51, 0),
				AllPalettes.ODPALENTRY(204, 127, 102),
				AllPalettes.ODPALENTRY(153, 38, 0),
				AllPalettes.ODPALENTRY(153, 95, 76),
				AllPalettes.ODPALENTRY(127, 31, 0),
				AllPalettes.ODPALENTRY(127, 79, 63),
				AllPalettes.ODPALENTRY(76, 19, 0),
				AllPalettes.ODPALENTRY(76, 47, 38),
				AllPalettes.ODPALENTRY(byte.MaxValue, 127, 0),
				AllPalettes.ODPALENTRY(byte.MaxValue, 191, 127),
				AllPalettes.ODPALENTRY(204, 102, 0),
				AllPalettes.ODPALENTRY(204, 153, 102),
				AllPalettes.ODPALENTRY(153, 76, 0),
				AllPalettes.ODPALENTRY(153, 114, 76),
				AllPalettes.ODPALENTRY(127, 63, 0),
				AllPalettes.ODPALENTRY(127, 95, 63),
				AllPalettes.ODPALENTRY(76, 38, 0),
				AllPalettes.ODPALENTRY(76, 57, 38),
				AllPalettes.ODPALENTRY(byte.MaxValue, 191, 0),
				AllPalettes.ODPALENTRY(byte.MaxValue, 223, 127),
				AllPalettes.ODPALENTRY(204, 153, 0),
				AllPalettes.ODPALENTRY(204, 178, 102),
				AllPalettes.ODPALENTRY(153, 114, 0),
				AllPalettes.ODPALENTRY(153, 133, 76),
				AllPalettes.ODPALENTRY(127, 95, 0),
				AllPalettes.ODPALENTRY(127, 111, 63),
				AllPalettes.ODPALENTRY(76, 57, 0),
				AllPalettes.ODPALENTRY(76, 66, 38),
				AllPalettes.ODPALENTRY(byte.MaxValue, byte.MaxValue, 0),
				AllPalettes.ODPALENTRY(byte.MaxValue, byte.MaxValue, 127),
				AllPalettes.ODPALENTRY(204, 204, 0),
				AllPalettes.ODPALENTRY(204, 204, 102),
				AllPalettes.ODPALENTRY(153, 153, 0),
				AllPalettes.ODPALENTRY(153, 153, 76),
				AllPalettes.ODPALENTRY(127, 127, 0),
				AllPalettes.ODPALENTRY(127, 127, 63),
				AllPalettes.ODPALENTRY(76, 76, 0),
				AllPalettes.ODPALENTRY(76, 76, 38),
				AllPalettes.ODPALENTRY(191, byte.MaxValue, 0),
				AllPalettes.ODPALENTRY(223, byte.MaxValue, 127),
				AllPalettes.ODPALENTRY(153, 204, 0),
				AllPalettes.ODPALENTRY(178, 204, 102),
				AllPalettes.ODPALENTRY(114, 153, 0),
				AllPalettes.ODPALENTRY(133, 153, 76),
				AllPalettes.ODPALENTRY(95, 127, 0),
				AllPalettes.ODPALENTRY(111, 127, 63),
				AllPalettes.ODPALENTRY(57, 76, 0),
				AllPalettes.ODPALENTRY(66, 76, 38),
				AllPalettes.ODPALENTRY(127, byte.MaxValue, 0),
				AllPalettes.ODPALENTRY(191, byte.MaxValue, 127),
				AllPalettes.ODPALENTRY(102, 204, 0),
				AllPalettes.ODPALENTRY(153, 204, 102),
				AllPalettes.ODPALENTRY(76, 153, 0),
				AllPalettes.ODPALENTRY(114, 153, 76),
				AllPalettes.ODPALENTRY(63, 127, 0),
				AllPalettes.ODPALENTRY(95, 127, 63),
				AllPalettes.ODPALENTRY(38, 76, 0),
				AllPalettes.ODPALENTRY(57, 76, 38),
				AllPalettes.ODPALENTRY(63, byte.MaxValue, 0),
				AllPalettes.ODPALENTRY(159, byte.MaxValue, 127),
				AllPalettes.ODPALENTRY(51, 204, 0),
				AllPalettes.ODPALENTRY(127, 204, 102),
				AllPalettes.ODPALENTRY(38, 153, 0),
				AllPalettes.ODPALENTRY(95, 153, 76),
				AllPalettes.ODPALENTRY(31, 127, 0),
				AllPalettes.ODPALENTRY(79, 127, 63),
				AllPalettes.ODPALENTRY(19, 76, 0),
				AllPalettes.ODPALENTRY(47, 76, 38),
				AllPalettes.ODPALENTRY(0, byte.MaxValue, 0),
				AllPalettes.ODPALENTRY(127, byte.MaxValue, 127),
				AllPalettes.ODPALENTRY(0, 204, 0),
				AllPalettes.ODPALENTRY(102, 204, 102),
				AllPalettes.ODPALENTRY(0, 153, 0),
				AllPalettes.ODPALENTRY(76, 153, 76),
				AllPalettes.ODPALENTRY(0, 127, 0),
				AllPalettes.ODPALENTRY(63, 127, 63),
				AllPalettes.ODPALENTRY(0, 76, 0),
				AllPalettes.ODPALENTRY(38, 76, 38),
				AllPalettes.ODPALENTRY(0, byte.MaxValue, 63),
				AllPalettes.ODPALENTRY(127, byte.MaxValue, 159),
				AllPalettes.ODPALENTRY(0, 204, 51),
				AllPalettes.ODPALENTRY(102, 204, 127),
				AllPalettes.ODPALENTRY(0, 153, 38),
				AllPalettes.ODPALENTRY(76, 153, 95),
				AllPalettes.ODPALENTRY(0, 127, 31),
				AllPalettes.ODPALENTRY(63, 127, 79),
				AllPalettes.ODPALENTRY(0, 76, 19),
				AllPalettes.ODPALENTRY(38, 76, 47),
				AllPalettes.ODPALENTRY(0, byte.MaxValue, 127),
				AllPalettes.ODPALENTRY(127, byte.MaxValue, 191),
				AllPalettes.ODPALENTRY(0, 204, 102),
				AllPalettes.ODPALENTRY(102, 204, 153),
				AllPalettes.ODPALENTRY(0, 153, 76),
				AllPalettes.ODPALENTRY(76, 153, 114),
				AllPalettes.ODPALENTRY(0, 127, 63),
				AllPalettes.ODPALENTRY(63, 127, 95),
				AllPalettes.ODPALENTRY(0, 76, 38),
				AllPalettes.ODPALENTRY(38, 76, 57),
				AllPalettes.ODPALENTRY(0, byte.MaxValue, 191),
				AllPalettes.ODPALENTRY(127, byte.MaxValue, 223),
				AllPalettes.ODPALENTRY(0, 204, 153),
				AllPalettes.ODPALENTRY(102, 204, 178),
				AllPalettes.ODPALENTRY(0, 153, 114),
				AllPalettes.ODPALENTRY(76, 153, 133),
				AllPalettes.ODPALENTRY(0, 127, 95),
				AllPalettes.ODPALENTRY(63, 127, 111),
				AllPalettes.ODPALENTRY(0, 76, 57),
				AllPalettes.ODPALENTRY(38, 76, 66),
				AllPalettes.ODPALENTRY(0, byte.MaxValue, byte.MaxValue),
				AllPalettes.ODPALENTRY(127, byte.MaxValue, byte.MaxValue),
				AllPalettes.ODPALENTRY(0, 204, 204),
				AllPalettes.ODPALENTRY(102, 204, 204),
				AllPalettes.ODPALENTRY(0, 153, 153),
				AllPalettes.ODPALENTRY(76, 153, 153),
				AllPalettes.ODPALENTRY(0, 127, 127),
				AllPalettes.ODPALENTRY(63, 127, 127),
				AllPalettes.ODPALENTRY(0, 76, 76),
				AllPalettes.ODPALENTRY(38, 76, 76),
				AllPalettes.ODPALENTRY(0, 191, byte.MaxValue),
				AllPalettes.ODPALENTRY(127, 223, byte.MaxValue),
				AllPalettes.ODPALENTRY(0, 153, 204),
				AllPalettes.ODPALENTRY(102, 178, 204),
				AllPalettes.ODPALENTRY(0, 114, 153),
				AllPalettes.ODPALENTRY(76, 133, 153),
				AllPalettes.ODPALENTRY(0, 95, 127),
				AllPalettes.ODPALENTRY(63, 111, 127),
				AllPalettes.ODPALENTRY(0, 57, 76),
				AllPalettes.ODPALENTRY(38, 66, 76),
				AllPalettes.ODPALENTRY(0, 127, byte.MaxValue),
				AllPalettes.ODPALENTRY(127, 191, byte.MaxValue),
				AllPalettes.ODPALENTRY(0, 102, 204),
				AllPalettes.ODPALENTRY(102, 153, 204),
				AllPalettes.ODPALENTRY(0, 76, 153),
				AllPalettes.ODPALENTRY(76, 114, 153),
				AllPalettes.ODPALENTRY(0, 63, 127),
				AllPalettes.ODPALENTRY(63, 95, 127),
				AllPalettes.ODPALENTRY(0, 38, 76),
				AllPalettes.ODPALENTRY(38, 57, 76),
				AllPalettes.ODPALENTRY(0, 63, byte.MaxValue),
				AllPalettes.ODPALENTRY(127, 159, byte.MaxValue),
				AllPalettes.ODPALENTRY(0, 51, 204),
				AllPalettes.ODPALENTRY(102, 127, 204),
				AllPalettes.ODPALENTRY(0, 38, 153),
				AllPalettes.ODPALENTRY(76, 95, 153),
				AllPalettes.ODPALENTRY(0, 31, 127),
				AllPalettes.ODPALENTRY(63, 79, 127),
				AllPalettes.ODPALENTRY(0, 19, 76),
				AllPalettes.ODPALENTRY(38, 47, 76),
				AllPalettes.ODPALENTRY(0, 0, byte.MaxValue),
				AllPalettes.ODPALENTRY(127, 127, byte.MaxValue),
				AllPalettes.ODPALENTRY(0, 0, 204),
				AllPalettes.ODPALENTRY(102, 102, 204),
				AllPalettes.ODPALENTRY(0, 0, 153),
				AllPalettes.ODPALENTRY(76, 76, 153),
				AllPalettes.ODPALENTRY(0, 0, 127),
				AllPalettes.ODPALENTRY(63, 63, 127),
				AllPalettes.ODPALENTRY(0, 0, 76),
				AllPalettes.ODPALENTRY(38, 38, 76),
				AllPalettes.ODPALENTRY(63, 0, byte.MaxValue),
				AllPalettes.ODPALENTRY(159, 127, byte.MaxValue),
				AllPalettes.ODPALENTRY(51, 0, 204),
				AllPalettes.ODPALENTRY(127, 102, 204),
				AllPalettes.ODPALENTRY(38, 0, 153),
				AllPalettes.ODPALENTRY(95, 76, 153),
				AllPalettes.ODPALENTRY(31, 0, 127),
				AllPalettes.ODPALENTRY(79, 63, 127),
				AllPalettes.ODPALENTRY(19, 0, 76),
				AllPalettes.ODPALENTRY(47, 38, 76),
				AllPalettes.ODPALENTRY(127, 0, byte.MaxValue),
				AllPalettes.ODPALENTRY(191, 127, byte.MaxValue),
				AllPalettes.ODPALENTRY(102, 0, 204),
				AllPalettes.ODPALENTRY(153, 102, 204),
				AllPalettes.ODPALENTRY(76, 0, 153),
				AllPalettes.ODPALENTRY(114, 76, 153),
				AllPalettes.ODPALENTRY(63, 0, 127),
				AllPalettes.ODPALENTRY(95, 63, 127),
				AllPalettes.ODPALENTRY(38, 0, 76),
				AllPalettes.ODPALENTRY(57, 38, 76),
				AllPalettes.ODPALENTRY(191, 0, byte.MaxValue),
				AllPalettes.ODPALENTRY(223, 127, byte.MaxValue),
				AllPalettes.ODPALENTRY(153, 0, 204),
				AllPalettes.ODPALENTRY(178, 102, 204),
				AllPalettes.ODPALENTRY(114, 0, 153),
				AllPalettes.ODPALENTRY(133, 76, 153),
				AllPalettes.ODPALENTRY(95, 0, 127),
				AllPalettes.ODPALENTRY(111, 63, 127),
				AllPalettes.ODPALENTRY(57, 0, 76),
				AllPalettes.ODPALENTRY(66, 38, 76),
				AllPalettes.ODPALENTRY(byte.MaxValue, 0, byte.MaxValue),
				AllPalettes.ODPALENTRY(byte.MaxValue, 127, byte.MaxValue),
				AllPalettes.ODPALENTRY(204, 0, 204),
				AllPalettes.ODPALENTRY(204, 102, 204),
				AllPalettes.ODPALENTRY(153, 0, 153),
				AllPalettes.ODPALENTRY(153, 76, 153),
				AllPalettes.ODPALENTRY(127, 0, 127),
				AllPalettes.ODPALENTRY(127, 63, 127),
				AllPalettes.ODPALENTRY(76, 0, 76),
				AllPalettes.ODPALENTRY(76, 38, 76),
				AllPalettes.ODPALENTRY(byte.MaxValue, 0, 191),
				AllPalettes.ODPALENTRY(byte.MaxValue, 127, 223),
				AllPalettes.ODPALENTRY(204, 0, 153),
				AllPalettes.ODPALENTRY(204, 102, 178),
				AllPalettes.ODPALENTRY(153, 0, 114),
				AllPalettes.ODPALENTRY(153, 76, 133),
				AllPalettes.ODPALENTRY(127, 0, 95),
				AllPalettes.ODPALENTRY(127, 63, 111),
				AllPalettes.ODPALENTRY(76, 0, 57),
				AllPalettes.ODPALENTRY(76, 38, 66),
				AllPalettes.ODPALENTRY(byte.MaxValue, 0, 127),
				AllPalettes.ODPALENTRY(byte.MaxValue, 127, 191),
				AllPalettes.ODPALENTRY(204, 0, 102),
				AllPalettes.ODPALENTRY(204, 102, 153),
				AllPalettes.ODPALENTRY(153, 0, 76),
				AllPalettes.ODPALENTRY(153, 76, 114),
				AllPalettes.ODPALENTRY(127, 0, 63),
				AllPalettes.ODPALENTRY(127, 63, 95),
				AllPalettes.ODPALENTRY(76, 0, 38),
				AllPalettes.ODPALENTRY(76, 38, 57),
				AllPalettes.ODPALENTRY(byte.MaxValue, 0, 63),
				AllPalettes.ODPALENTRY(byte.MaxValue, 127, 159),
				AllPalettes.ODPALENTRY(204, 0, 51),
				AllPalettes.ODPALENTRY(204, 102, 127),
				AllPalettes.ODPALENTRY(153, 0, 38),
				AllPalettes.ODPALENTRY(153, 76, 95),
				AllPalettes.ODPALENTRY(127, 0, 31),
				AllPalettes.ODPALENTRY(127, 63, 79),
				AllPalettes.ODPALENTRY(76, 0, 19),
				AllPalettes.ODPALENTRY(76, 38, 47),
				AllPalettes.ODPALENTRY(51, 51, 51),
				AllPalettes.ODPALENTRY(91, 91, 91),
				AllPalettes.ODPALENTRY(132, 132, 132),
				AllPalettes.ODPALENTRY(173, 173, 173),
				AllPalettes.ODPALENTRY(214, 214, 214),
				AllPalettes.ODPALENTRY(byte.MaxValue, byte.MaxValue, byte.MaxValue)
			}.ToArray();
		}

		public static uint[] getDarkPalette()
		{
			if (AllPalettes.DarkPalette == null)
			{
				AllPalettes.DarkPalette = AllPalettes.CreateDarkPalette();
			}
			return AllPalettes.DarkPalette;
		}

		private static uint[] LightPalette;

		private static uint[] DarkPalette;
	}
}
